using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;

/// <summary>
/// Summary description for EmpleadosCtrl
/// </summary>
public class EmpleadosCtrl
{
    private EmpleadosBD bdEmpleados;
    private static EmpleadosEnt entEmpleado;
    private AtributosCtrl atributos;
    
	public EmpleadosCtrl()
	{
		bdEmpleados = new EmpleadosBD();
        this.atributos = new AtributosCtrl();
	}


    //Obtiene y retorna un dataTable con la informacion de tareas
    public DataTable ActualizarGrid()
    {
        return this.bdEmpleados.ConsultarEmpleados();
    }
    //Recibe la cedula de un empleado y consulta al empleado con esa cedula almacenando los datos
    //en un objeto entidad y retorna ese objeto con la informacion del empleado consultado
    public EmpleadosEnt ConsultarEmpleado(int cedula)
    {
        entEmpleado = this.bdEmpleados.ConsultarEmpleado(cedula);
        return entEmpleado;
    }
    //Encapsula los datos del nuevo empleado( cedula, nombre, telefono, correo, departamento y puesto ) creando un nuevo objeto 
    //entidad de empleados y envia el objeto como parametro al metodo InsertarEmpleado de la controladora
    //de base de datos. Retorna true si se realizo la insercion con exito y false en caso contrario
    public bool InsertarEmpleado(int cedula, string nombre, int telefono, string correo, string departamento, string puesto)
    {
        EmpleadosEnt Empleado = new EmpleadosEnt(cedula,nombre,telefono,correo,departamento,puesto);
        return this.bdEmpleados.InsertarEmpleado(Empleado);
    }
    //Se llama al metodo eliminar de la controladora base de datos enviado como parametro
    //la del ultimo empleadoconsultado.Retorna true si se realizo la eliminacion con exito 
    //y false en caso contrario
    public bool EliminarEmpleado(int id)
    {
        return this.bdEmpleados.EliminarEmpleado(id, entEmpleado.Cedula);
    }
    //Encapsula los datos recibidos por parametro junto con la cedula del ultimo empleado
    //consultado y envia el objeto creado como parametro al metodo Actuliazartarea de 
    //controladora de base de datos junto con la cedula vieja del empleado. 
    //Retorna true si se realizo la modificacion con exito y false en caso contrario
    public bool ActualizarEmpleado(int cedula, string nombre, int telefono, string correo, string departamento, string puesto)
    {
        EmpleadosEnt Empleado = new EmpleadosEnt(cedula, nombre, telefono, correo, departamento, puesto);
        return this.bdEmpleados.ActualizarEmpleado(Empleado,entEmpleado.Cedula);
    }
    //Obtiene y retorna un dataTable con los nombres de los empleados que no poseen cuenta
    //llamando al metodo ConsultarEmpleadosSinCuenta de la controladora de la base de datos
    public DataTable ConsultarEmpleadosSinCuenta()
    {
        return this.bdEmpleados.ConsultarEmpleadosSinCuenta();
    }
    //Retorna todos los atributos de modulo
    public AtributosCtrl SolicitarEstadoAtributos()
    {
        return this.atributos;
    }

    //Realiza la accion correspondiente al estado en el que se encuentra
    //segun el primer parametro
    public bool AccionesAceptar(bool modificando, int cedula, string nombre, int telefono, string correo, string departamento, string puesto)
    {
        bool resultado;

        if (modificando)
        {
            resultado = this.ActualizarEmpleado(cedula, nombre, telefono, correo, departamento, puesto);
        }
        else
        {
            resultado = this.InsertarEmpleado(cedula, nombre, telefono, correo, departamento, puesto);
        }
        //Retorna true si la operacion realizada fue exitosa y false en caso contrario
        return resultado;
    }
//*********************PROYECTO***************************************************************************

    public List<EmpleadosEnt> ConsultarEmpleadosAsignados(int idProyecto)
    { 
        return this.bdEmpleados.ConsultarEmpleadosAsignados(idProyecto);
    }

    public List<EmpleadosEnt> ConsultarEmpleadosDisponibles(int id)
    {
        return this.bdEmpleados.ConsultarEmpleadosDisponibles(id);
    }

    public List<EmpleadosEnt> ConsultarEmpleadosDisponibles()
    {
        return this.bdEmpleados.ConsultarEmpleadosDisponibles();
    }

    public bool ModificarRecursosHumanos(int idProyecto, List<EmpleadosEnt> asignados)
    {
        return bdEmpleados.ModificarRecursosHumanos(idProyecto,asignados);
    }

    public List<EmpleadosEnt> ObtenerEmpleados()
    {
        return bdEmpleados.ObtenerEmpleados();
    }

    public List<EmpleadosEnt> ConsultarEmpleadosLideres()
    {
        return bdEmpleados.ConsultarEmpleadosLideres();
    }


}
